home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / util4 / chunker.lha / Chunker / source / bfn.c next >
C/C++ Source or Header  |  1995-11-10  |  1KB  |  54 lines

  1. /*************************************************************************
  2.  *
  3.  * Chunker/DeChunker
  4.  *
  5.  * Copyright ©1995 Lee Kindness and Evan Tuer
  6.  * cs2lk@scms.rgu.ac.uk
  7.  *
  8.  * bfn.c
  9.  */
  10.  
  11. #include "bfn.h"
  12.  
  13.  
  14. /*************************************************************************
  15.  * BuildFName() - Build an incremental filename from base.
  16.  */
  17.  
  18. char *BuildFName(char *base, long *num)
  19. {
  20.     char *ret = NULL;
  21.     
  22.     if( base )
  23.     {
  24.         char *s;
  25.         
  26.         /* strlen + . + maximum 8 digit hex num + \0 */
  27.         unsigned int maxsize = strlen(base) + 10;
  28.         
  29.         if( ret = mmalloc(maxsize) )
  30.         {
  31.             msprintf(ret, "%s.%03lx", base, *num);
  32.             ++(*num);
  33.             
  34.             /* Uppercase the hex part for transfer and UNIX case sensitive reasons */
  35.             for( s = ret; *s != '.'; ++s );
  36.             for( ++s; *s |= '\0'; ++s )
  37.                 *s = toupper(*s);
  38.         }
  39.     }
  40.     return( ret );
  41. }
  42.  
  43.  
  44. /*************************************************************************
  45.  * FreeFName() - Free memory allocated by BuildFName()
  46.  */
  47.  
  48. void FreeFName(char *fname)
  49. {
  50.     if( fname )
  51.         mfree(fname);
  52. }
  53.  
  54.